Fully or partially automated media libraries, sometimes referred to herein as “libraries” or “robots”, are available to store and manipulate removable storage media, such as tapes used to store computer data for backup or archive purposes. A typical library may be equipped with a robotic or other mechanism for manipulating the media stored therein, such as by inserting a selected volume or unit of the media (e.g., a particular tape) into a read/write device associated with the unit, e.g., a tape drive configured to write data to and/or read data from the media. In the computer network environment, e.g., a backup application (sometimes referred to herein as “data mover”) may be used to store data from one or more computers or other devices connected to the network (sometimes referred to herein as network “nodes” or “hosts”) on storage media associated with a library.
A backup application may request to perform operations such as mounting (installing) a specified tape on a designated drive or removing a tape from a drive (sometimes referred to herein as “dismounting” a tape). A request could include multiple operations, such as a request to export multiple tapes in a library by storing them in another location. When exporting a set of tapes, a robot first moves the tapes to a library door where an operator can then open the door and remove the tapes. Servicing such requests can potentially hold up the servicing of other requests. For example, if a request to export ten tapes is received, and there are only five slots in the door, after the first five tapes are exported to the door, the robot must wait until an operator manually removes the first five tapes before proceeding with exporting the last five tapes. While the process waits, other potentially higher priority requests requiring use of the robot are prevented from being serviced. Other operations involving multiple steps may similarly block other requests from being performed, even during intervals when a resource needed to perform the other request(s) is not actively being used to perform the operation. A method for servicing requests that avoids such blocking and maximizes the use of resources is needed.